home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 2010-11-13 | 8.5 KB | 396 lines |
- Screen Open 0,320,256,16,LORES
- Flash Off : Colour 3,$666
- Cls 0 : Curs Off
- 'Load "df0:cardsamples.abk"
- Dim Q(2),DD(40),RD(40),MK(20),SCORE(2),C(15),NAM$(5),HSCORE(5)
- Global RD(),MK(),Q(),SCORE(),LEVEL,TM,SND,H,G1,G2,PEOPLE,DD(),NT$,C(),NAM$(),HSCORE()
- 'MAKENEWFILE
- Screen Open 2,320,256,16,Lowres
- Screen Open 1,320,256,16,Lowres
- Cls 0
- TITLE1
- TITLE2
- TITLE3
- BG:
- Show
- H=2001 : LEVEL=1 : G1=0 : G2=0
- Cls 0
- ST:
- For N=1 To 20 : MK(N)=0 : Next
- For N=1 To 40 : DD(N)=0 : Next
- Limit Mouse X Hard(0),Y Hard(0) To X Hard(319),Y Hard(190)
- Cls 0,0,0 To 320,193
- Auto View Off
- GRAFIX[LEVEL]
- Screen 1 : Screen To Front 1
- MCULOR
- Put Block 1,0,194
- COUNT_CLIK
- GAMEBOXREP
- SND=1 : LEVELPRT : DSCORE[0,1] : DSCORE[0,2] : SND=0
- MIXEM : Auto View On : View
- SHUFFLE[12]
- SETUP
- COVER_UP
- SCORE(1)=0
- '
- GAME
- '
- LEVEL=LEVEL+1
- If LEVEL=9
- GAMEFINISH
- Else
- Wait 25
- Sam Play 6,5,4600
- DSCORE[-SCORE(1),1]
- DSCORE[-SCORE(2),2]
- Goto ST
- End If
- Wait Key
- Goto BG
- '***********************************************************
- Procedure GAME
- Repeat
- For N=1 To PEOPLE
- RD:
- Exit If SCORE(1)+SCORE(2)=200
- Ink 11,0
- Text 163,212,Str$(N)
- TRY
- If RD(Q(1))=RD(Q(2))
- SETCHECKARRAY
- FANFARE
- DSCORE[10,N]
- Sam Play 6,Rnd(1)+2,14000
- Goto RD
- Else
- CANCEL
- End If
- Next N
- Until SCORE(1)+SCORE(2)=200
- GAMEBOX
- End Proc
- Procedure GAMEBOX
- If SCORE(2)>SCORE(1)
- Set Pattern 0
- Ink 9
- G2=G2+1
- For N=0 To G2-1
- Bar 242+N*8,228 To 248+N*8,234
- Next N
- End If
- If SCORE(1)>SCORE(2)
- Ink 9
- G1=G1+1
- For N=0 To G1-1
- Bar 8+N*8,228 To 14+N*8,234
- Next N
- End If
- End Proc
- Procedure GAMEBOXREP
- Set Pattern 0
- Ink 9
- If G2=0 Then Goto MM
- For N=0 To G2-1
- Bar 242+N*8,228 To 248+N*8,234
- Next N
- MM:
- If G1=0 Then Pop Proc
- For N=0 To G1-1
- Bar 8+N*8,228 To 14+N*8,234
- Next N
- End Proc
- Procedure GAMEFINISH
- For N=10 To 90 : Play N,1 : Play N+2,1 : Next
- If PEOPLE=1 and H>HSCORE(5) Then TRYHIGH[H]
- SAVHISCORES
- End Proc
- Procedure FANFARE
- For N=1 To 3
- For F=1 To 2
- X=(Q(F)-1) mod 10 : Y=Int((Q(F)-1)/10)
- Wait 2
- Ink 1
- Box 32*(X)-1,48*Y-1 To 32*(X)+31,48*Y+47
- Wait 2
- Ink 0
- Box 32*(X)-1,48*Y-1 To 32*(X)+31,48*Y+47
- Next F
- Next N
- End Proc
- Procedure SETCHECKARRAY
- DD(Q(1))=0
- DD(Q(2))=0
- End Proc
- Procedure COUNT_CLIK
- Dec H
- MAKEZEROES[H,4]
- Ink 11,0
- Text 129,237,NT$
- End Proc
- Procedure CANCEL
- Wait 60
- Sam Play 2,4,6600
- For N=1 To 2
- Ink 2,4
- X=(Q(N)-1) mod 10 : Y=Int((Q(N)-1)/10)
- Bar 32*(X)+1,48*Y+1 To 32*(X)+29,48*Y+45
- Ink 0
- Box 32*(X)-1,48*Y-1 To 32*(X)+31,48*Y+47
- Next N
- End Proc
- Procedure MAKEZEROES[T,W]
- NT$=Str$(T)
- NT$=Right$(NT$,Len(NT$)-1)
- NT$=String$("0",W-Len(NT$))+NT$
- End Proc
- Procedure DSCORE[S,PL]
- SCORE(PL)=SCORE(PL)+S
- For N=SCORE(PL)-S To SCORE(PL)
- MAKEZEROES[N,3]
- Ink 11,0
- If PL=1 Then Text 28,217,NT$
- If PL=2 Then Text 260,217,NT$
- Next
- End Proc
- Procedure LEVELPRT
- Ink 11,0
- MAKEZEROES[LEVEL,1]
- Text 220,237,NT$
- End Proc
- Procedure TRY
- For N=1 To 2
- REDO:
- Repeat
- X=Int(X Screen(X Mouse))/32+1
- Y=Int(Y Screen(Y Mouse))/48
- NO=X+10*Y
- Until(Mouse Click=2) or(Inkey$=" ")
- Q(N)=NO
- '--CHECK If CARD ALREADY TURNED UP---
- If DD(Q(N))=0 Then Goto REDO
- '--indicate card picked--------------
- Ink 1
- Box 32*(X-1)-1,48*Y-1 To 32*(X)-1,48*Y+47
- Ink 0
- '--check if same card clicked twice--
- If N=2 and Q(1)=Q(2) Then Goto REDO
- Volume 6,30 : Sam Play 6,4,8000 : Wait 5 : Volume 6,63
- Paste Bob 32*(X-1),48*Y,RD(NO)
- ' Play 6,1
- COUNT_CLIK
- Next N
- '
- End Proc
- Procedure SHUFFLE[TM]
- For T=1 To TM
- Wait Vbl
- For N=0 To 39
- 'Wait 1
- B=Rnd(19)+1
- Paste Bob 32*(N mod 10),48*Int(N/10),B
- Next N
- Next T
- End Proc
- Procedure SETUP
- For N=0 To 39
- B=RD(N+1)
- Paste Bob 32*(N mod 10),48*Int(N/10),B
- Next N
- 'Look Time
- Wait 50
- End Proc
- Procedure COVER_UP
- Ink 2,4
- Set Pattern Rnd(15)+2
- For X=0 To 39
- Wait 2
- Read N
- Bar 32*(N mod 10)+1,48*Int(N/10)+1 To 32*(N mod 10)+29,48*Int(N/10)+45
- Next
- Data 0,1,2,3,4,5,6,7,8,9,19,29,39,38,37,36,35,34,33,32,31,30
- Data 20,10,11,12,13,14,15,16,17,18,28,27,26,25,24,23,22,21
- 'Data 30,20,10,0,1,11,21,31,32,22,12,2,3,13,23,33,34,24,14,4,5,15,25,35
- 'Data 36,26,16,6,7,17,27,37,38,28,18,8,9,19,29,39
- End Proc
- Procedure MIXEM
- For N=1 To 40
- AGAIN:
- Q=Rnd(19)+1
- If MK(Q)=2 Then Goto AGAIN
- Inc MK(Q)
- RD(N)=Q
- DD(N)=1
- Next
- End Proc
- Procedure GRAFIX[LEVEL]
- 'Load Iff "data:dp2.pics/cards1"
- 'Spack 1 To 8
- Unpack 8 To 2
- If LEVEL=1
- Get Block 1,0,194,319,54
- GCULOR
- End If
- If LEVEL=1 or LEVEL=2 Then BK=8
- If LEVEL=3 or LEVEL=4 Then BK=7
- If LEVEL=5 or LEVEL=6 Then BK=9
- If LEVEL=7 or LEVEL=8 Then BK=10
- Unpack BK To 2
- For N=0 To 9
- If LEVEL=1 or LEVEL=3 or LEVEL=5 or LEVEL=7 Then Get Bob N+1,N*32+1,0 To N*32+32,47
- If LEVEL=2 or LEVEL=4 or LEVEL=6 or LEVEL=8 Then Get Bob N+1,N*32+1,96 To N*32+32,143
- Next N
- For N=0 To 9
- If LEVEL=1 or LEVEL=3 or LEVEL=5 or LEVEL=7 Then Get Bob N+11,N*32+1,48 To N*32+32,95
- If LEVEL=2 or LEVEL=4 or LEVEL=6 or LEVEL=8 Then Get Bob N+11,N*32+1,144 To N*32+32,191
- Next N
- 'Cls 0
- Screen 1
- End Proc
- Procedure GCULOR
- For N=0 To 15
- C(N)=Colour(N)
- Next
- End Proc
- Procedure MCULOR
- For N=0 To 15
- Colour N,C(N)
- Next
- End Proc
- Procedure TRYHIGH[SCR]
- MYSCORE=SCR
- SOGHT
- SHOHIGHSCORES
- Pen 2
- Locate 26,22 : Print Using "#####";MYSCORE
- Locate 10,22 : Curs On
- A$=""
- For N=1 To 8
- ZZ: Q$=Inkey$
- If Q$=""
- Goto ZZ
- End If
- Exit If Q$=Chr$(13)
- A$=A$+Q$
- Print Right$(Q$,1);
- Next
- Curs Off : Bell
- For N=4 To 1 Step -1
- NAM$(N+1)=NAM$(N)
- HSCORE(N+1)=HSCORE(N)
- Next N
- NAM$(1)=A$ : HSCORE(1)=MYSCORE
- SOGHT
- SHOHIGHSCORES
- End Proc
- Procedure SHOHIGHSCORES
- Hide : Curs Off
- Cls 0
- Ink 2,0
- Set Pattern 9
- Bar 10,30 To 310,210
- Set Pattern 0
- Ink 0
- Bar 30,50 To 290,190
- Pen 4 : Paper 0
- Ink 4,0 : Box 113,60 To 214,74
- Locate 15,8 : Print "HIGH SCORES"
- Pen 6
- For N=1 To 5
- Locate 10,2*(N+5) : Print Upper$(NAM$(N))
- Locate 27,2*(N+5) : Print Using "####";HSCORE(N)
- Next : Show
- End Proc
- Procedure SOGHT
- Repeat
- MARK=0
- For N=1 To 4
- If HSCORE(N)<HSCORE(N+1)
- T=HSCORE(N)
- T$=NAM$(N)
- HSCORE(N)=HSCORE(N+1)
- NAM$(N)=NAM$(N+1)
- HSCORE(N+1)=T
- NAM$(N+1)=T$
- MARK=1
- End If
- Next N
- Until MARK=0
- End Proc
- Procedure LODEHISCORES
- Open In 1,"HISCORE.AMOS"
- For N=1 To 5
- Input #1,NAM$(N)
- Input #1,HSCORE(N)
- Next N
- Close 1
- End Proc
- Procedure SAVHISCORES
- Open Out 1,"HISCORE.AMOS"
- For N=1 To 5
- Print #1,NAM$(N)
- Print #1,HSCORE(N)
- Next N
- Close 1
- End Proc
- Procedure MAKENEWFILE
- For N=1 To 5
- Read NAM$(N)
- Read HSCORE(N)
- Next N
- Data "GERMAINE",210,"AMELIA",400,"CHARLEINE",620,"DOLLY",322,"ABALENE",120
- SAVHISCORES
- End Proc
- Procedure TITLE2
- LODEHISCORES
- SOGHT
- SHOHIGHSCORES
- Pen 5 : Paper 0
- TITLE$=".... M A T C H C A R D S ...."
- Repeat
- Locate 6,1
- For N=1 To Len(TITLE$) : Pen Rnd(5)+1 : Print Mid$(TITLE$,N,1); : Next
- Pen 13 : Locate 13,28 : Print "Press S to Start"
- Until Upper$(Inkey$)="S"
- End Proc
- Procedure TITLE3
- Cls 0 : Pen 6
- Locate 4,1 : Print "One Player plays all Eight Levels,"
- Locate 4,3 : Print "To Finish with Maximum Kliks Left."
- Locate 5,5 : Print "Two Players play each other,"
- Locate 12,6 : Print "to win each Level."
- Curs Off : Pen 1 : Paper 0
- Locate 6,24 : Print "Number of Players (1 or 2) "
- Pen 4
- Locate 1,10 : Print "Use RIGHT MOUSE Button or SPACE BAR"
- Pen 6 : Locate 12,12 : Print "To select Cards"
- Pen 4 : Locate 12,14 : Print "During the Game";
- WW: A$=Inkey$ : If A$="" Then Goto WW
- If A$="1" Then PEOPLE=1
- If A$="2" Then PEOPLE=2
- If Val(A$)>2 or Val(A$)=0 Then Goto WW
- Cls 0
- End Proc
- Procedure TITLE1
- Auto View Off
- B=1
- Repeat
- Auto View Off
- GRAFIX[B]
- Get Sprite Palette
- Screen To Front 1
- Pen 5 : Paper 0
- Locate 7,30 : Print "Hold Spacebar to Continue"
- TITLE$=".... M A T C H C A R D S ...."
- Curs Off
- Auto View On
- K=0
- Repeat
- SHUFFLE[1]
- Locate 5,27
- For N=1 To Len(TITLE$) : Pen Rnd(5)+1 : Print Mid$(TITLE$,N,1); : Next
- Inc K
- Until K=6
- Add B,1,1 To 8
- Until Inkey$<>""
- End Proc